import { getToken } from '@/utils/auth';
import { ElMessage } from 'element-plus';

/**
 * 创建带 Token 认证的 WebSocket 连接（通过 URL 参数传递 token）
 * @param {String} path - WebSocket 接口路径（如 '/ws/location'）
 * @returns {WebSocket|null} - WebSocket 实例
 */
export function createAuthWebSocket(path) {
  const token = getToken();
  if (!token) {
    ElMessage.error('请先登录获取令牌');
    return null;
  }

  // 构建完整 URL（包含 token 作为查询参数）
  const protocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:';
  const host = window.location.host;
  // 从环境变量获取基础路径（避免硬编码）
  const baseUrl = import.meta.env.VITE_APP_BASE_API.replace(/^http(s)?:/, '');
  // 在 URL 后拼接 token 参数（关键修改）
  const wsUrl = `${protocol}//${host}${baseUrl}${path}?Authorization=${token}`;

  // 创建 WebSocket 连接（无需第二个参数）
  const websocket = new WebSocket(wsUrl);

  // 错误处理
  websocket.onerror = (error) => {
    ElMessage.error(`WebSocket 连接错误: ${error.message}`);
  };

  return websocket;
}